package com.han.yrpc.core.provider;

import com.han.yrpc.core.registry.ServiceRegistry;

/**
 * 无法保证注册中心是否实现了本地缓存的设计，
 * 所以增加一个抽象类，模板模式
 * 不需要我的实现者来实现本地缓存（服务提供方的接口信息缓存）
 */
public abstract class AbstractServiceRegistry implements ServiceRegistry {

    private final ServiceCache serviceCache;

    protected AbstractServiceRegistry(ServiceCache serviceCache) {
        this.serviceCache = serviceCache;
    }

    @Override
    public void registry(String serviceName, Object object) {
        serviceCache.addService(serviceName, object);

        doRegistry(serviceName, object.getClass());
    }

    public abstract void doRegistry(String serviceName, Class<?> clazzImpl);

}
